package com.linkgie.galaxyframework.web.server;

import javax.servlet.ServletContextAttributeListener;
import javax.servlet.ServletContextListener;
import javax.servlet.ServletRequestAttributeListener;
import javax.servlet.ServletRequestListener;
import javax.servlet.http.HttpServlet;

/**
 * Web上下文；
 * <p>
 * 描述了由Web服务器 {@link WebServer} 承载的 Web 运行时环境信息和配置接口；
 * 
 * @author huanghaiquan
 *
 */
public interface WebContext {

	/**
	 * 设置上下文路径；
	 * 
	 * @param contextPath
	 */
	void setContextPath(String contextPath);
	
	/**
	 * 注册一个新的服务程序 {@link HttpServlet} ；
	 * 
	 * @param name        服务程序名称；
	 * @param servlet     服务程序实例；
	 * @param urlMappings 服务程序的 URL 通配符清单；匹配其中的 URL 时触发服务程序的执行；
	 */
	void registHttpServlet(String name, HttpServlet servlet, String... urlMappings);

	/**
	 * 注册一个服务程序上下文监听器 {@link ServletContextListener};
	 * 
	 * @param listener
	 */
	void addListener(ServletContextListener listener);

	/**
	 * 注册一个服务程序上下文属性变化监听器 {@link ServletContextAttributeListener};
	 * 
	 * @param listener
	 */
	void addListener(ServletContextAttributeListener listener);

	/**
	 * 注册一个服务程序请求监听器 {@link ServletRequestListener};
	 * 
	 * @param listener
	 */
	void addListener(ServletRequestListener listener);

	/**
	 * 注册一个服务程序属性变化监听器 {@link ServletRequestAttributeListener};
	 * 
	 * @param listener
	 */
	void addListener(ServletRequestAttributeListener listener);


}